using System;

namespace OutpatientApi.DTO
{
    /// <summary>
    /// 查询消费明细数据传输对象
    /// </summary>
    public class GetConsumptionDetailsDto
    {
        /// <summary>
        /// 消费明细ID
        /// </summary>
        public int Consumption_detailsId { get; set; }

        /// <summary>
        /// 病人挂号ID
        /// </summary>
        public int Patient_registrationId { get; set; }

        /// <summary>
        /// 药品名称
        /// </summary>
        public string DrugName { get; set; } = string.Empty;

        /// <summary>
        /// 药品单价
        /// </summary>
        public decimal UnitPrice { get; set; }

        /// <summary>
        /// 药品数量
        /// </summary>
        public int Quantity { get; set; }

        /// <summary>
        /// 小计金额（单价 * 数量）
        /// </summary>
        public decimal SubTotal { get; set; }

        /// <summary>
        /// 病人挂号信息 - 挂号单号
        /// </summary>
        public string RegisterNo { get; set; } = string.Empty;

        /// <summary>
        /// 病人挂号信息 - 患者姓名
        /// </summary>
        public string PatientName { get; set; } = string.Empty;

        /// <summary>
        /// 病人挂号信息 - 患者身份证号
        /// </summary>
        public string IDNumber { get; set; } = string.Empty;

        /// <summary>
        /// 病人挂号信息 - 挂号日期
        /// </summary>
        public DateTime RegisterDate { get; set; }

        /// <summary>
        /// 病人挂号信息 - 就诊日期
        /// </summary>
        public DateTime VisitDate { get; set; }

        /// <summary>
        /// 病人挂号信息 - 挂号费用
        /// </summary>
        public decimal RegisterFee { get; set; }

        /// <summary>
        /// 病人挂号信息 - 其他费用
        /// </summary>
        public decimal OtherFee { get; set; }

        /// <summary>
        /// 病人挂号信息 - 科室名称
        /// </summary>
        public string DepartmentName { get; set; } = string.Empty;

        /// <summary>
        /// 病人挂号信息 - 医生姓名
        /// </summary>
        public string DoctorName { get; set; } = string.Empty;

        /// <summary>
        /// 病人挂号信息 - 挂号类型名称
        /// </summary>
        public string RegisterTypeName { get; set; } = string.Empty;

        /// <summary>
        /// 病人挂号信息 - 患者年龄
        /// </summary>
        public int Age { get; set; }

        /// <summary>
        /// 病人挂号信息 - 患者性别 (true=男, false=女)
        /// </summary>
        public bool Gender { get; set; }

        /// <summary>
        /// 病人挂号信息 - 患者联系电话
        /// </summary>
        public string PhoneNumber { get; set; } = string.Empty;

        /// <summary>
        /// 病人挂号信息 - 患者详细住址
        /// </summary>
        public string Address { get; set; } = string.Empty;

        /// <summary>
        /// 病人挂号信息 - 患者民族
        /// </summary>
        public string Ethnicity { get; set; } = string.Empty;

        /// <summary>
        /// 病人挂号信息 - 患者文化程度
        /// </summary>
        public string EducationLevel { get; set; } = string.Empty;

        /// <summary>
        /// 病人挂号信息 - 患者职业
        /// </summary>
        public string Occupation { get; set; } = string.Empty;

        /// <summary>
        /// 病人挂号信息 - 患者邮政编码
        /// </summary>
        public string PostalCode { get; set; } = string.Empty;

        /// <summary>
        /// 病人挂号信息 - 患者婚姻状况 (true=已婚, false=未婚)
        /// </summary>
        public bool MaritalStatus { get; set; }

        /// <summary>
        /// 病人挂号信息 - 患者出生日期
        /// </summary>
        public DateTime DateOfBirth { get; set; }

        /// <summary>
        /// 病人挂号信息 - 患者就诊卡号
        /// </summary>
        public string CardNo { get; set; } = string.Empty;

        /// <summary>
        /// 总费用（挂号费 + 其他费用 + 药品小计）
        /// </summary>
        public decimal TotalAmount { get; set; }

        /// <summary>
        /// 性别显示文本
        /// </summary>
        public string GenderText => Gender ? "男" : "女";

        /// <summary>
        /// 婚姻状况显示文本
        /// </summary>
        public string MaritalStatusText => MaritalStatus ? "已婚" : "未婚";
    }
} 